home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 7
/
FM Towns Free Software Collection 7.iso
/
ms_dos
/
thmake
/
thmake.doc
< prev
next >
Wrap
Text File
|
1993-11-30
|
7KB
|
212 lines
“THmake”プログラム保守ツール V1.1a
五味仁
【配付ファイル】
THmakeは以下のファイルで構成されます。
THmake.exe プログラム本体
THmake.doc ドキュメント
THmake.c ソース
makefile サンプル
【概略】
ただのMAKEです。一般に公開されているものよりも高機能のつもりで
すが、LSI-Cに含まれているものやUNIXのものより劣ります。
MAKEとは、コンパイルやアセンブルなどの手段などをあらかじめ書い
ておいて、それに従って日付の新しくなっているものから処理を行うもので
す。
【起動方法】
普通はただオプションとか無しで実行するだけです。必要に応じてオプショ
ンを書くことも出来ます。そして、もし処理方法を省略する条件を書いてお
けば、ファイル名を直接書くことによって処理を行わせる事もできます。
THmake [[option]...] [[target name]...]
かならず、処理の方法を書いたファイルを読み込まなければなりません。
オプションで指定しない限り、通常は'makefile'という名前のファイルを読
み込みます。あと、ターゲットを指定する時には、指定した後ろにオプショ
ンを書くことは許されません。
【makefileの書き方】
行単位に処理をします。
行には以下のものがあり、扱いが違います。
マクロ定義行
依存記述行
省略記述行
命令指令行
全ての行に言えますが、¥の記号を最後に置くと、行を次の行に続かせる
ことが出来ます。この時、¥の前には空白を一つは入れる事と、¥のあとす
ぐに改行する事を忘れないでください。あと、#以降は全て注釈と見なして
無視します。ただし、#の前に空白が一つ以上ある時に限ります。無い時は、
そのまま#と見なします。
【マクロ定義行】
必要に応じてマクロを定義できます。
<マクロ名> = <内容>
これによって定義されたマクロは、$(マクロ名)によって展開され
ます。なお、マクロの中にマクロを定義することは出来ません。もしそ
れをやった場合は、マクロを展開したものをそのマクロに定義したと見
なされます。どのように定義されたか調べたい時は、リスティングのオ
プションを書いてください。
【依存記述行】
ファイルが、どのファイルを元にして作られるかの関係を記すもので
す。
ターゲット1 ターゲット2 ... : ソース1 ソース2 ...
ソースの中で一番新しいものと、ターゲットの中で一番古いものと比
べます。もしターゲットの方が新しければ、何も行いません。ソースの
方が新しければ、続いての行で処理を行います。
処理行は、依存記述行に続いて書きますが、最初は必ずタブを入れて
ください。なお、処理行を省略しますと、ターゲットの日付変更だけを
行います。この時は、touchと表示されます。
【省略記述行】
処理行が省略された時や、コマンドラインからターゲット名を入れた
時に有効になる処理を記述します。
<ソース拡張子><ターゲット拡張子>:
必ず、つなげて書いてください。そしてこのあと、処理行を記述しま
す。
ここで、処理行の時に使えるマクロを説明します。省略記述行と併用
する時には殆どかならず必要です。省略記述以外にも使えます。
$< 一番左のソース名に置き代わります。
$@ 一番左のターゲット名に置き代わります。
$# 全てのソース名に置き代わります。
$? ターゲットより新しい全てのソース名に変わります。
${...} 中括弧の中のものを、ファイル'make.i'に書き込み、コマ
ンドラインには'make.i'と出します。@によるコマンドラ
インの引用の出来るソフトについては'@${...}'とやれば
いいのです。
$:c ファイルを列挙する時に、普段は半角スペースで区切りま
すが、これを指定すると'$:+'という時に'+'がスペースの
代わりに区切る事になります。
これらを使えば、面倒な処理行の記述は少なくなります。例として、
サンプルを見ていただければ分かると思います。
省略記述に当てはまるファイルは、全てソースとして列挙されてしま
います。つまり、省略できるところは省略しなければ、二重にソースと
して認められてしまうことになります。リンカなどで注意してください。
【命令指令行】
命令指令の書き方ですが、コンマのあとに命令名を書き、そのあとに
コロンを打ちます。つまり'.SILENT:'という感じです。
以下のものをサポートしています。
IGNORE 返値を常に無視させます。
SILENT 処理行の表示を行いません。
【オプション】
以下のものがあります。必ずハイフンのあとに続けてください。あと、大
抵は小文字なので注意してください。
?,h,H 簡単なヘルプ画面を出します。
c このMAKEは、返値を見るためにコマンドインタプリタを通
していません。もしリダイレクトなどの機能を使う時には、こ
れを指定してください。なお、これを指定すると全部の処理行
に対して行ってしまうので、もし特定の行だけをコマンドイン
タプリタに通したい時には、その処理行の頭に'+'を書いてく
ださい。注意として、コマンドインタプリタを通じて実行され
た実行ファイルからは、返値を受け取ることは出来ません。
d 処理の表示を行わなくします。全部に対して表示をやめてしま
うので、もし特定のものにだけ適用させたければ、その処理行
の頭に'@'と書いてください。
D<mac> マクロ変数を定義します。この直後にマクロ名を書き、そのあ
とに一つ以上空白を置いてから内容を書きます。制限として、
この時には変数の内容には空白を使うことは出来ません。
e 処理の実行を行わなくします。この時に、タイムスタンプは調
べませんので、全ての処理を見ることが出来ます。
f 処理方法記述ファイルを指定します。このあと一つ離してファ
イル名を書いてください。なお、このオプションを使わなかっ
た時は'makefile'となります。
i 依存関係の簡単なリストを出します。ただし、省略されたもの
のうち、ターゲットのソース省略はリスティングされますが、
ソースをターゲットとした子処理はされませんので注意してく
ださい。
m マクロ変数の列挙表示を行います。
p 経過表示をします。主にデバッグに使っていたものですが、確
認が要るという人は使ってください。
t タイムスタンプを更新するだけの処理をします。これを実行し
たあとは、擬似的に作成されたことになりますので、注意が必
要です。
v このMAKEは、返値が0以外の時は処理を中断しますが、こ
れを指定した時には返値を常に無視します。一定の処理だけの
返値だけを無視したい時には、その処理行の頭に'-'と記述し
てください。
【普通のMAKEとの注意点】
処理行の時に使えるマクロが限られています。特に使うものだけを用意し
ましたが、無いものもありますので注意してください。
'SUFFIXES'はありません。その結果、ある意味では面倒さはなくなりまし
たが、'makefile'じゃないファイルを処理方法記述ファイルに指定する時に
はオプションを利用することになります。
【あとがき】
このプログラムは、LSI-CとそのMAKEを使って作られていますの
で、要は腕試し程度のつもりで作りました。しかし、自分のプログラムの方
が改造しやすいので、これからもっと便利にしたいと思います。
【履歴】
93/03/17 v0.53 最低限の完成.
93/03/19 v1.0 初版.省略やマクロの追加.
93/03/27 v1.1 'make.i'書き出しのサポート等.
93/03/29 v1.1a 省略かどうかの判断のバグ取り.
93/08/12 v1.1b 省略時のソースファイル判定のバグ修正.